/***********************************************************************************************************************
/*
/*    cArrayW.cpp / mojo_engine
/*   
/*    Copyright 2009 Robert Sacks.  See end of file for more info.
/*
/**********************************************************************************************************************/

#include "stdafx.h"



using namespace mojo;

//======================================================================================================================
//  DATA
//======================================================================================================================

//======================================================================================================================
//  PROTOTYPES
//======================================================================================================================

//======================================================================================================================
//  CODE
//======================================================================================================================

//----------------------------------------------------------------------------------------------------------------------
//  CONTAINS
//----------------------------------------------------------------------------------------------------------------------
bool cArrayW :: contains ( WORD w ) const
{
	for ( unsigned u = 0; u < uQty; u++ )
	{
		if ( pBuf[u] == w )
			return true;
	}

	return false;
}


//----------------------------------------------------------------------------------------------------------------------
//  OPERATOR IS EQUAL
//----------------------------------------------------------------------------------------------------------------------
bool cArrayW :: operator== ( const cArrayW & r ) const
{
	if ( uQty != r.uQty )
		return false;

	for ( size_t i = 0; i != uQty; i++ )
	{
		if ( ! ( this->pBuf[i] == r.pBuf[i] ) )
			return false;
	}

	return true;
}



//----------------------------------------------------------------------------------------------------------------------
//  COMPARE
//----------------------------------------------------------------------------------------------------------------------
int cArrayW :: compare ( const void * a, const void * b )
{
	return ( (int)(*(WORD*)a) - (int)(*(WORD*)b) );
}


//----------------------------------------------------------------------------------------------------------------------
//  SORT
//----------------------------------------------------------------------------------------------------------------------
void cArrayW :: sort ()
{
	std::qsort ( this->pBuf, this->qty(), sizeof(WORD), compare );
}
